<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue中的数据代理</title>
    <script src="../../JS/vue.js"></script>
  </head>
  <body>
    <!-- 
        1、Vue 中的数据代理通过vm对象来代理data对象中的属性操作(读/写) 
        2、Vue 中数据代理的好处：更加方便的操作data中的数据
        3、基本原理
             a、通过object.defineProperty()把data对象所有属性添加到vm上
             b、为每一个添加到vm上的属性，都指定一个getter setter 
             c、在getter setter内部 去操作(读/写)data中对应的属性


         Vue将data里面的数据拷贝了一份给_data有将_data里的属性提到Vue事例中,_data然后通过defineProperty 实现数据代理，这样通过get set 操作属性   
             
    -->
    <div id="root">
      <h3>{{name}}</h3>
      <h3>{{address}}</h3>
    </div>
    <script>
      Vue.config.productionTip = false
      let data = {
        name: 'xiaomo',
        address: '莫楼',
      }
      const vm = new Vue({
        el: '#root',
        data,
      })
      console.log(vm)
    </script>
  </body>
</html>
